home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / comm / mail / Mutt089src.lha / Mutt-0.89i-AMIGA / src / mutt_menu.h < prev    next >
C/C++ Source or Header  |  1998-01-28  |  3KB  |  89 lines

  1. /*
  2.  * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
  3.  *
  4.  *     This program is free software; you can redistribute it and/or modify
  5.  *     it under the terms of the GNU General Public License as published by
  6.  *     the Free Software Foundation; either version 2 of the License, or
  7.  *     (at your option) any later version.
  8.  *
  9.  *     This program is distributed in the hope that it will be useful,
  10.  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *     GNU General Public License for more details.
  13.  *
  14.  *     You should have received a copy of the GNU General Public License
  15.  *     along with this program; if not, write to the Free Software
  16.  *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  */
  18.  
  19. /*
  20.  * This file is named mutt_menu.h so it doesn't collide with ncurses menu.h
  21.  */
  22.  
  23. #include "keymap.h"
  24. #include "mutt_regex.h"
  25.  
  26. #define REDRAW_INDEX        (1)
  27. #define REDRAW_MOTION        (1<<1)
  28. #define REDRAW_MOTION_RESYNCH    (1<<2)
  29. #define REDRAW_CURRENT        (1<<3)
  30. #define REDRAW_STATUS        (1<<4)
  31. #define REDRAW_FULL        (1<<5)
  32.  
  33. typedef struct menu_t
  34. {
  35.   char *title;   /* the title of this menu */
  36.   char *help;    /* quickref for the current menu */
  37.   void *data;    /* extra data for the current menu */
  38.   int current;   /* current entry */
  39.   int max;       /* the number of entries in the menu */
  40.   int redraw;    /* when to redraw the screen */
  41.   int menu;    /* menu definition for keymap entries. */
  42.   int offset;    /* which screen row to start the index */
  43.   int pagelen;    /* number of entries per screen */
  44.   int tagprefix;
  45.   
  46.   /* callback to generate an index line for the requested element */
  47.   void (*make_entry) (char *, size_t, struct menu_t *, int);
  48.   
  49.   /* how to search the menu */
  50.   int (*search) (struct menu_t *, regex_t *re, int n);
  51.  
  52.   int (*tag) (struct menu_t *, int i);
  53.  
  54.   /* the following are used only by mutt_menuLoop() */
  55.   int top;        /* entry that is the top of the current page */
  56.   int oldcurrent;    /* for driver use only. */
  57.   char *searchBuf;    /* last search pattern */
  58.   int searchDir;    /* direction of search */
  59.   int tagged;        /* number of tagged entries */
  60. } MUTTMENU;
  61.  
  62. void menu_jump (MUTTMENU *);
  63. void menu_redraw_full (MUTTMENU *);
  64. void menu_redraw_index (MUTTMENU *);
  65. void menu_redraw_motion (MUTTMENU *);
  66. void menu_redraw_current (MUTTMENU *);
  67. void menu_first_entry (MUTTMENU *);
  68. void menu_last_entry (MUTTMENU *);
  69. void menu_top_page (MUTTMENU *);
  70. void menu_bottom_page (MUTTMENU *);
  71. void menu_middle_page (MUTTMENU *);
  72. void menu_next_page (MUTTMENU *);
  73. void menu_prev_page (MUTTMENU *);
  74. void menu_next_line (MUTTMENU *);
  75. void menu_prev_line (MUTTMENU *);
  76. void menu_half_up (MUTTMENU *);
  77. void menu_half_down (MUTTMENU *);
  78. void menu_current_top (MUTTMENU *);
  79. void menu_current_middle (MUTTMENU *);
  80. void menu_current_bottom (MUTTMENU *);
  81. void menu_check_recenter (MUTTMENU *);
  82.  
  83. MUTTMENU *mutt_new_menu (void);
  84. void mutt_menuDestroy (MUTTMENU **);
  85. int mutt_menuLoop (MUTTMENU *);
  86.  
  87. /* used in both the index and pager index to make an entry. */
  88. void index_make_entry (char *, size_t, struct menu_t *, int);
  89.